import gradio as gr
from openai import OpenAI
import os
from langchain_openai import ChatOpenAI
from utils.get_weather import *

api_key = os.getenv("OPENAI_API_KEY")
base_url = os.getenv("OPENAI_API_BASE")


message = [
    {"role":"system", "content":""
                                "背景: 你是一个只是渊博，乐于助人的智能聊天机器人，你的任务是陪伴聊天，请用简短的对话方式，用中文讲一段话，每次回答的字数控制在50字以内"
                                "工作流:"
                                "1. 如果提问和查询天气相关，查询和体感相关的情况下， 直接返回'GETWEATHER', 如果有后台数据查询结果支撑，可以直接整合结果返回， 不然将会收到严厉的惩罚"
                                "2. 如果是查询日期的话，直接返回'GATDAY',不然的话将会收到严厉的惩罚"
                                "3. 其他情况下正常返回"}
          ]

final_message = {"role":"system", "content":"背景: 你是一个只是渊博，乐于助人的智能聊天机器人，你的任务是陪伴聊天，请用简短的对话方式，用中文讲一段话，每次回答的字数控制在50字以内"}


llm = ChatOpenAI(
    model="gpt-3.5-turbo",
    temperature=0,
    api_key=api_key,
    base_url=base_url
)

input = "今天上海天气几度"
message.append({"role":"user", "content": f'{input}'})

response = llm.invoke(message)
print("1: " + response.content)

if "GETWEATHER" ==  response.content:
    tempeature = get_shanghai_temperature()
    _tmp_tempeature = f"今天上海天气{tempeature}"
    # _tmp_tempeature = "今天上海天气11度"
    # 第二次调用大模型, 做数据整合处理
    message.append({"role":"user", "content": f' 用户输入:{input}  后台数据查询结果:{_tmp_tempeature}'})
    message.pop(0)
    message.insert(0, final_message)
    response = llm.invoke(message)
    print(response)
    _tmp_message = response.content
    message.append({"role":"assistant","content":_tmp_message})

print(_tmp_message)